
//=======================================================================
//@naȍ~̓G̃I[\֐WłB
//@̃t@Cinclude_functionŎ荞ނA
//@KvȕRsyĎgpĂB
//=======================================================================

//=======================================================================
//  摜ւ̃pX \Ⴄꍇ͗vύX
//-----------------------------------------------------------------------
let imgaura1 = GetCurrentScriptDirectory~".\img\Aura1.png";
let imgaura2 = GetCurrentScriptDirectory~".\img\Aura2.png";
//=======================================================================

//-----------------------------------------------------------------------
//  GI[ [th11`th14] [ꊇݒ]
//-----------------------------------------------------------------------
task Aura1(time,r,g,b) {

	loop {
		loop(time) {
			Aura1_2(6,r,g,b);
			yield;
		}
		Aura1_1(18,r,g,b);
	}
}

//-----------------------------------------------------------------------
//  GI[ [th11`th14] [tF[hAEg]
//-----------------------------------------------------------------------
task Aura1_1 (time,r,g,b) {

	let aura    = Obj_Create(OBJ_EFFECT);
	let aura2   = Obj_Create(OBJ_EFFECT);
	let mY      = 0;
	let angle   = rand(-20,20);
	let alpha1  = 0;
	let alpha2  = 0;
	let scalex1 = 0;
	let scalex2 = 0;
	let scaley1 = rand(1,2);
	let scaley2 = 0;

	LoadGraphic(imgaura1);

	Obj_SetPosition(aura,GetEnemyX,GetEnemyY);
	ObjEffect_SetTexture(aura,imgaura1);
	ObjEffect_SetRenderState(aura,ADD);
	ObjEffect_SetPrimitiveType(aura,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetScale(aura,scalex1,scaley1);
	ObjEffect_SetAngle(aura,0,0,180-angle);
	ObjEffect_SetLayer(aura,1);
	ObjEffect_CreateVertex(aura,4);
	ObjEffect_SetVertexXY(aura,0,-24,-24);
	ObjEffect_SetVertexXY(aura,1,-24, 24);
	ObjEffect_SetVertexXY(aura,2, 24,-24);
	ObjEffect_SetVertexXY(aura,3, 24, 24);
	ObjEffect_SetVertexUV(aura,0,  0,  0);
	ObjEffect_SetVertexUV(aura,1,  0, 48);
	ObjEffect_SetVertexUV(aura,2, 48,  0);
	ObjEffect_SetVertexUV(aura,3, 48, 48);

	Obj_SetPosition(aura2,GetEnemyX,GetEnemyY);
	ObjEffect_SetTexture(aura2,imgaura1);
	ObjEffect_SetRenderState(aura2,ADD);
	ObjEffect_SetPrimitiveType(aura2,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetScale(aura2,scalex1,scaley1);
	ObjEffect_SetAngle(aura2,0,0,angle);
	ObjEffect_SetLayer(aura2,1);
	ObjEffect_CreateVertex(aura2,4);
	ObjEffect_SetVertexXY(aura2,0,-24,-24);
	ObjEffect_SetVertexXY(aura2,1,-24, 24);
	ObjEffect_SetVertexXY(aura2,2, 24,-24);
	ObjEffect_SetVertexXY(aura2,3, 24, 24);
	ObjEffect_SetVertexUV(aura2,0,  0,  0);
	ObjEffect_SetVertexUV(aura2,1,  0, 48);
	ObjEffect_SetVertexUV(aura2,2, 48,  0);
	ObjEffect_SetVertexUV(aura2,3, 48, 48);

	loop(time) {

		if(scalex1<1.0) { scalex2 += 180/time; }
		if(scaley1<1.4) { scaley2 += 180/time; }

		mY += 56/time;
		alpha2 += 180/time;
		alpha1  = 255*sin(alpha2);
		scalex1 = 1.0*sin(scalex2);
		scaley1 = 1.4*sin(scaley2);

		Obj_SetPosition(aura ,GetX,GetY+15-mY);
		Obj_SetPosition(aura2,GetX,GetY-mY);
		ObjEffect_SetScale(aura ,2.0-scalex1,scaley1);
		ObjEffect_SetScale(aura2,2.4-scalex1,scaley1);
		ObjEffect_SetVertexColor(aura ,0,alpha1,r,g,b);
		ObjEffect_SetVertexColor(aura ,1,alpha1,r,g,b);
		ObjEffect_SetVertexColor(aura ,2,alpha1,r,g,b);
		ObjEffect_SetVertexColor(aura ,3,alpha1,r,g,b);
		ObjEffect_SetVertexColor(aura2,0,alpha1,r,g,b);
		ObjEffect_SetVertexColor(aura2,1,alpha1,r,g,b);
		ObjEffect_SetVertexColor(aura2,2,alpha1,r,g,b);
		ObjEffect_SetVertexColor(aura2,3,alpha1,r,g,b);
		yield;
	}
	Obj_Delete(aura);
	Obj_Delete(aura2);
}

//-----------------------------------------------------------------------
//  GI[ [th11`th14] []
//-----------------------------------------------------------------------
task Aura1_2 (time,r,g,b) {

	let aura   = Obj_Create(OBJ_EFFECT);
	let alpha  = 0;
	let scale  = 5.8;

	LoadGraphic(imgaura1);

	Obj_SetPosition(aura,GetEnemyX,GetEnemyY);
	ObjEffect_SetTexture(aura,imgaura1);
	ObjEffect_SetRenderState(aura,ADD);
	ObjEffect_SetPrimitiveType(aura,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetScale(aura,scale,scale);
	ObjEffect_SetAngle(aura,0,0,rand_int(0,360));
	ObjEffect_SetLayer(aura,1);
	ObjEffect_CreateVertex(aura,4);
	ObjEffect_SetVertexXY(aura,0,-24,-24);
	ObjEffect_SetVertexXY(aura,1,-24, 24);
	ObjEffect_SetVertexXY(aura,2, 24,-24);
	ObjEffect_SetVertexXY(aura,3, 24, 24);
	ObjEffect_SetVertexUV(aura,0, 48,  0);
	ObjEffect_SetVertexUV(aura,1, 48, 48);
	ObjEffect_SetVertexUV(aura,2, 96,  0);
	ObjEffect_SetVertexUV(aura,3, 96, 48);

	loop(time) {
		scale -= 5/time;
		alpha += 180/time;

		Obj_SetPosition(aura,GetEnemyX,GetEnemyY);
		ObjEffect_SetScale(aura,scale,scale);
		ObjEffect_SetVertexColor(aura,0,alpha,r,g,b);
		ObjEffect_SetVertexColor(aura,1,alpha,r,g,b);
		ObjEffect_SetVertexColor(aura,2,alpha,r,g,b);
		ObjEffect_SetVertexColor(aura,3,alpha,r,g,b);
		yield;
	}
	Obj_Delete(aura);
}

//-----------------------------------------------------------------------
//  GI[ [th11`th14] [̖͂]
//-----------------------------------------------------------------------
task Aura2 (time,r,g,b) {

	let aura   = Obj_Create(OBJ_EFFECT);
	let scale1 = 0;
	let scale2 = 1.3;
	let alpha  = 208;

	LoadGraphic(imgaura2);

	Obj_SetPosition(aura,GetEnemyX,GetEnemyY);
	ObjEffect_SetTexture(aura,imgaura2);
	ObjEffect_SetRenderState(aura,ALPHA);
	ObjEffect_SetPrimitiveType(aura,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetScale(aura,scale1,scale1);
	ObjEffect_SetAngle(aura,0,0,rand_int(0,360));
	ObjEffect_SetLayer(aura,1);
	ObjEffect_CreateVertex(aura,4);
	ObjEffect_SetVertexXY(aura,0,-128,-128);
	ObjEffect_SetVertexXY(aura,1,-128, 128);
	ObjEffect_SetVertexXY(aura,2, 128,-128);
	ObjEffect_SetVertexXY(aura,3, 128, 128);
	ObjEffect_SetVertexUV(aura,0,   0,   0);
	ObjEffect_SetVertexUV(aura,1,   0, 256);
	ObjEffect_SetVertexUV(aura,2, 256,   0);
	ObjEffect_SetVertexUV(aura,3, 256, 256);
	ObjEffect_SetVertexColor(aura,0,alpha,r,g,b);
	ObjEffect_SetVertexColor(aura,1,alpha,r,g,b);
	ObjEffect_SetVertexColor(aura,2,alpha,r,g,b);
	ObjEffect_SetVertexColor(aura,3,alpha,r,g,b);

	loop(time) {
		scale1 += scale2/time;
		Obj_SetPosition(aura,GetEnemyX,GetEnemyY);
		ObjEffect_SetScale(aura,scale1,scale1);
		ObjEffect_SetAngle(aura,0,0,rand_int(0,360));
		yield;
	}
	scale1 = scale2;
	loop {
		Obj_SetPosition(aura,GetEnemyX,GetEnemyY);
		ObjEffect_SetScale(aura,scale1,scale1);
		ObjEffect_SetAngle(aura,0,0,rand_int(0,360));
		yield;
	}
}